/**
 * Cookie 工具函数
 */

/**
 * 获取指定名称的 cookie 值
 * @param name cookie 名称
 * @returns cookie 值，如果不存在则返回 null
 */
export function getCookie(name: string): string | null {
  const cookies = document.cookie.split(';');
  for (let i = 0; i < cookies.length; i++) {
    const cookie = cookies[i].trim();
    // 检查这个 cookie 是否是我们要找的
    if (cookie.startsWith(name + '=')) {
      return decodeURIComponent(cookie.substring(name.length + 1));
    }
  }
  return null;
}

/**
 * 设置 cookie
 * @param name cookie 名称
 * @param value cookie 值
 * @param days cookie 过期天数，如果不指定则为会话 cookie
 * @param path cookie 路径，默认为 '/'
 */
export function setCookie(name: string, value: string, days?: number, path: string = '/'): void {
  let expires = '';
  if (days) {
    const date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = `; expires=${date.toUTCString()}`;
  }
  document.cookie = `${name}=${encodeURIComponent(value)}${expires}; path=${path}`;
}

/**
 * 删除 cookie
 * @param name cookie 名称
 * @param path cookie 路径，默认为 '/'
 */
export function deleteCookie(name: string, path: string = '/'): void {
  setCookie(name, '', -1, path);
}